import axios from 'axios';

/**
 * 从本地存储获取 token
 */
function getToken() {
  return localStorage.getItem('token');
}

/**
 * 保存 token 到本地存储
 */
function setToken(token: string) {
  localStorage.setItem('token', token);
}

/**
 * 验证本地存储的 token 是否存在
 * 如果不存在则抛出错误
 */
function validateToken() {
  const token = getToken();
  if (!token) {
    throw new Error('Token 不存在，请先登录');
  }
  return token;
}

// 创建 axios 实例
const instance = axios.create({
});

// 请求拦截器
instance.interceptors.request.use(config => {
  const token = validateToken();
  
  config.headers = config.headers || {};
  config.headers['Authorization'] = `Bearer ${token}`;
  config.headers['token'] = token;
  
  return config;
});

// 响应拦截器，处理 401
instance.interceptors.response.use(
  res => res,
  error => {
    if (error.response && error.response.status === 401) {
      // 清除无效的 token
      localStorage.removeItem('token');
      throw new Error('Token 已过期，请重新登录');
    }
    return Promise.reject(error);
  }
);

export default instance;